package com.seeTools.next.api.entity.sys;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.seeTools.next.api.bo.sys.MenuMetaInfo;
import com.seeTools.next.api.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;

import java.util.List;

/**
 * <p>
 * 系统菜单表
 * </p>
 *
 * @author FallenDust
 * @since 2023-05-04
 */
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@ExcelIgnoreUnannotated
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_menu")
public class SysMenu extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 上级菜单ID
     */
    private Long parentId;

    /**
     * 菜单类型：menu(菜单)，btn(按钮)
     */
    private String type;

    /**
     * 菜单路径
     */
    private String path;

    /**
     * 菜单名称
     */
    private String title;
    /**
     * 路由名称
     */
    private String name;

    /**
     * 组件路径
     */
    private String component;

    /**
     * 重定向路径
     */
    private String redirect;

    /**
     * 图标信息
     */
    private String icon;

    /**
     * 链接地址
     */
    private String link;

    /**
     * 是否隐藏：0否，1是
     */
    private Integer hide;

    /**
     * 是否缓存：1是，0否
     */
    private Integer keepAlive;

    /**
     * 是否固定：1是，0否
     */
    private Integer affix;

    /**
     * 是否外链：1是，0否
     */
    private Integer iframe;

    /**
     * 菜单排序
     */
    private Integer sort;

    /**
     * 权限标识
     */
    private String permission;
    /**
     * 菜单meta信息对象
     */
    @TableField(exist = false)
    private MenuMetaInfo meta;

    /**
     * 子菜单信息
     */
    @TableField(exist = false)
    private List<SysMenu> children;
}
